#include <57header.h>

/* Usage: ./03_write_upper filename */
int main(int argc, char *argv[]){
    ARGS_CHECK(argc, 2);
    int fd = open(argv[1], O_RDWR);
    ERROR_CHECK(fd, -1, "open");

    char ch;
    while(1){
        int ret = read(fd, &ch, sizeof(char));
        ERROR_CHECK(ret, -1, "read");
        if(ret == 0){
            // 读完文件，不读了
            break;
        }
        // 处理读到的字符
        ch = toupper(ch);
        // 每read一次文件指针就后移一个字节,此时直接写就写到了后面一个字符了
        // 就不是写在原本字符位置了
        // 所以每read一次就将文件指针往回走一位,这样才能够保证写在原先的位置
        lseek(fd, -1, SEEK_CUR);  
        write(fd, &ch, sizeof(char));
    }

    close(fd);
    return 0;
}

